package vg.services.user_interface_manager.interfaces;

import vg.services.plugin_manager.event_and_request.event.AUIEvent;
import vg.services.plugin_manager.event_and_request.request.AUIRequest;

/**
 * Determines methods for user interface observer.
 *
 * @author Timur Zolotuhin (e-mail: tzolotuhin@gmail.com)
 */
public interface IUserInterfaceObserver {
    /**
     * Will be called, if some module (or plugin) sent some event to the system.
     *
     * Note: it will be called from EDT.
     */
    public void dispatchEvent(AUIEvent event);

    /**
     * Will be called, if some module (or plugin) sent some request to the system.
     *
     * Note: it will be called from EDT.
     */
    public void dispatchRequest(AUIRequest request);

    /**
     * Will be called, if some module (or plugin) sent some event to the system.
     *
     * Note: it will not be called from EDT.
     */
    public void noEDTDispatchEvent(AUIEvent event);

    /**
     * Will be called, if some module (or plugin) sent some request to the system.
     *
     * Note: it will not be called from EDT.
     */
    public void noEDTDispatchRequest(AUIRequest request);
}
